<?php

/**
 * Classe de representação de uma camada de negócio da entidade Taxa
 * A camada de negócio é a parte que engloba as regras e efetua os comandos de execução de um sistema
 * @package Sistema
 * @subpackage Taxa
 */
class NTaxa extends negocioPadrao {

    /**
     * @gerador variavelPadrao
     * @var integer Identificador da Taxa
     */
    public $identificadorDaTaxa;
    /**
     * @gerador variavelPadrao
     * @var integer Condomínio
     */
    public $condominio;
    /**
     * @gerador variavelPadrao
     * @var TData Data
     */
    public $data;
    /**
     * @gerador variavelPadrao
     * @var string Descrição
     */
    public $descricao;
    /**
     * @gerador variavelPadrao
     * @var TMoeda Valor
     */
    public $valor;
    /**
     * @gerador variavelPadrao
     * @var integer Conta
     */
    public $conta;

    /**
     * Retorna o nome da propriedade que contém o valor chave de negócio
     * @gerador metodoPadrao
     * @return string
     */
    function nomeChave() {
	return 'identificadorDaTaxa';
    }

    /**
     * Executa o comando de gravação do objeto
     * @param bolean caso verdadeiro irá incluir com a chave de negócio passada caso falso irá verificar, se foi passada a chave irá alterar senão irá incluir
     */
    public function gravar($gravarComChavePassada = false) {
	parent::gravar();
	$imovel = new NImovel($this->pegarConexao());
	$imovel->filtrarIdentificadorDoCondominio(operador::igual($this->condominio));
	$colecao = $imovel->pesquisar();
	while ($imovel = $colecao->avancar()) {
	    $nFatura = new NFatura($this->pegarConexao());
	    $nFatura->passarIdentificadorDoImovel($imovel->valorChave());
	    $nFatura->passarDataDeEmissao(TDataHora::agora());
	    $nFatura->passarDataDeVencimento($this->data);
	    $nFatura->passarIdentificadorDaTaxa($this->valorChave());
	    $nFatura->passarValor($this->valor);
	    $nFatura->gravar();
	}
    }

}

?>